//
//  QueueTaskViewController.h
//  ThreadDemo
//
//  Created by 苏沫离 on 2018/7/12.
//  Copyright © 2018年 苏沫离. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface QueueTaskViewController : UITableViewController

@end


/* 
 队列 + 任务
 
 区别         并发队列        串行队列                 主队列
 
 同步任务   没有开辟新线程，    没有开辟新线程，        没有开辟新线程，
 串行执行这个任务    串行执行这个任务        串行执行这个任务
 
 异步任务   开辟新线程，         开辟新线程（1条），   没有开辟新线程，
 并发执行这个任务      串行执行这个任务      串行执行这个任务
 */

/*
 GCD 的使用步骤其实很简单，只有两步。
 创建一个队列（串行队列或并发队列）
 将任务追加到任务的等待队列中，然后系统就会根据任务类型执行任务（同步执行或异步执行）
 */

/*
 //创建一个 分派对列
 //优先级 和 dispatch_get_global_queue 的默认优先级一样，为 DISPATCH_QUEUE_PRIORITY_DEFAULT
 dispatch_queue_t dispatch_queue_create(const char *_Nullable label, dispatch_queue_attr_t _Nullable attr);
 
 //问题：多个串行队列之间是并行执行的，如何让创建的多个串行队列串行执行？
 //问题：如何更改 dispatch_queue_create 创建的队列的优先级？
 //为给定的对象设置目标队列,改变要修改对象的优先级与对象的新目标队列相同
 //dispatch_object_t object 要修改的对象。这个参数不能为空。
 //dispatch_queue_t _Nullable queue 对象的新目标队列。保留队列，释放之前的队列(如果有的话)。这个参数不能为空。
 void dispatch_set_target_queue(dispatch_object_t object, dispatch_queue_t _Nullable queue);
 //用处：能用来设置队列的优先级之外，还能够创建队列的层次体系
 


 */
